/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package propres;

import java.util.*;

/**
 *
 * @author neochange
 */
public class CtrlDominioplato {

    private CtrlDominioalimento Contal;
    private estrucplato estrucp;
    private plato plat;
    private g_disco gestor;

    public CtrlDominioplato(CtrlDominioalimento CC) throws Exception {
        Contal = CC;
        if (estrucp == null) {
            
            estrucp = new estrucplato();
        }
        if (plat == null) {
            plat = new plato();
        }
        gestor = new g_discod();

    }

    public void intplato(String h, String[] Y) throws Exception
    {
        if(Contal.get_estruc().consultar_alimento(Y[0])!=null && Contal.get_estruc().consultar_alimento(Y[1])!=null ){
        plat = new plato(h, Y, Contal.get_estruc());
        estrucp.añadir_plato(plat);
        }
        else{
        throw new Exception("Los alimentos no se encuentran en la estructura");
        }
    }

    public void modplato(String h, String[] Y) {
        plat = new plato(h, Y, Contal.get_estruc());
        estrucp.modificar_plato(plat);
    }

    public List<String> consplato(String h) {
        List<String> T = new ArrayList();
        plato p = estrucp.consultar_plato(h);

        

        if (p != null) {
            T.add(p.Get_Nombre());
            List<String> C = new ArrayList();
            C = p.lista_compo();
            T.add(C.get(0));
            T.add(C.get(1));
        } else {
            int i = 0;
            while (i < 3) {
                T.add("");
                i++;
            }
        }

        return T;
    }

    public void eliplato(String h) {
        estrucp.eliminar_plato(h);
    }

    public List<String> listplato() {
        List<String> T = new ArrayList();
        List<plato> v = new ArrayList();

        v = estrucp.listaplatos();

        int t = 0;
        while (t < v.size()) {
            T.add(v.get(t).Get_Nombre());
            t++;
        }


        return T;
    }

    public List<String> listali(String ti) {
        List<String> T = new ArrayList();
        List<alimento> v = new ArrayList();

        v = Contal.get_estruc().consultar_alimentosclas(ti);

        int t = 0;
        while (t < v.size()) {
            T.add(v.get(t).Get_Nombre());
            t++;
        }

        return T;
    }

    public List<plato> lista_platos() {

        List<plato> T = new ArrayList();
        T = estrucp.listaplatos();
        return T;
    }

    public void guardar(String path) throws Exception {
        gestor.guardar_objecte2(estrucp, path);

    }

    public void cargar(String path) throws Exception {
        // hay que modificar estrucp para que compruebe los validos
        // es decir los de los alimentos del sistema
        estrucplato H = (estrucplato) gestor.llegir_objecte2(path);
        List<plato> J = new ArrayList();

        J = H.listaplatos();
        int h = 0;
        while (h < J.size()) { // comprovamos que los alimentos del plato estan en la estructura

            if (Contal.get_estruc().compr_existencia(J.get(h).lista_compo())) {
                
                if (estrucp.consultar_plato(J.get(h).Get_Nombre()) == null) {
                
                    estrucp.añadir_plato(J.get(h));
                }
            }
            h++;
        }
    }
}
